package com.bgs.travelapp.userRealBinds.service.impl;

import com.bgs.travelapp.page.MyPageHelper;
import com.bgs.travelapp.page.PageRequest;
import com.bgs.travelapp.page.PageResult;
import com.bgs.travelapp.result.CommonResult;
import com.bgs.travelapp.user.entity.UserEntity;
import com.bgs.travelapp.user.mapper.UserMapper;
import com.bgs.travelapp.userRealBinds.entity.UserRealBindsEntity;
import com.bgs.travelapp.userRealBinds.mapper.UserRealBindsMapper;
import com.bgs.travelapp.userRealBinds.service.UserRealBindsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;

import java.util.Date;
import java.util.List;

@Service
public class UserRealBindsServiceImpl implements UserRealBindsService {

    @Autowired
    UserRealBindsMapper userRealBindsMapper;

    @Autowired
    UserMapper userMapper;

    /**
     * 获取实名信息列表（后台管理）
     * lzy 2022-8-17 11点28分
     * @param pageRequest
     * @return
     */
    @Override
    public CommonResult getUserRealBindsList(PageRequest pageRequest) {
        MyPageHelper.startPage(pageRequest);
        UserRealBindsEntity userRealBindsEntity = new UserRealBindsEntity();
        userRealBindsEntity.setDelFlag(0);
        List<UserRealBindsEntity> userRealBindsList = userRealBindsMapper.select(userRealBindsEntity);
        PageResult pageResult = MyPageHelper.pageInfo(userRealBindsList);
        return CommonResult.ok(pageResult);
    }

    /**
     * 获取用户账号 用于 绑定实例信息（后台管理）
     * lzy 2022-8-17 15点16分
     * @return
     */
    @Override
    public CommonResult getUserList() {
        UserEntity user = new UserEntity();
        user.setDelFlag(0);
        List<UserEntity> userList = userMapper.select(user);
        return CommonResult.ok(userList);
    }

    /**
     * 绑定（新增）实名信息（后台管理）
     * lzy 2022-8-17 15点22分
     * @param userRealBinds
     * @return
     */
    @Override
    public CommonResult saveUserRealBins(UserRealBindsEntity userRealBinds) {
        userRealBinds.setDelFlag(0);
        userRealBinds.setCreateTime(new Date());
        userRealBinds.setUpdateTime(new Date());
        int insert = userRealBindsMapper.insert(userRealBinds);
        if (insert > 0) {
            return CommonResult.ok(insert);
        } else {
            return CommonResult.error("500");
        }
    }

    /**
     * 校验当前账户是否已绑定当前实名信息（后台管理）
     * lzy 2022-8-17 19点22分
     * @param realName
     * @return
     */
    @Override
    public CommonResult checkRealName(String realName, Integer userId) {
        UserRealBindsEntity userRealBindsEntity = new UserRealBindsEntity();
        userRealBindsEntity.setRealName(realName);
        userRealBindsEntity.setUserId(userId);
        userRealBindsEntity.setDelFlag(0);
        int i = userRealBindsMapper.selectCount(userRealBindsEntity);
        if (i <= 0) {
            return CommonResult.ok(i);
        } else {
            return CommonResult.error("500");
        }
    }

    /**
     * 校验当前账户是否已绑定当前实名身份证号（后台管理）
     * lzy 2022-8-17 19点46分
     * @param identity
     * @param userId
     * @return
     */
    @Override
    public CommonResult checkIdentity(String identity, Integer userId) {
        UserRealBindsEntity userRealBindsEntity = new UserRealBindsEntity();
        userRealBindsEntity.setIdentity(identity);
        userRealBindsEntity.setUserId(userId);
        userRealBindsEntity.setDelFlag(0);
        int i = userRealBindsMapper.selectCount(userRealBindsEntity);
        if (i <= 0) {
            return CommonResult.ok(i);
        } else {
            return CommonResult.error("500");
        }
    }

    /**
     * 删除实名信息（逻辑删除）（后台管理）
     * lzy 2022-8-17 20点04分
     * @param id
     * @return
     */
    @Override
    public CommonResult deleteUserRealBinds(Integer id) {
        UserRealBindsEntity userRealBindsEntity = new UserRealBindsEntity();
        userRealBindsEntity.setId(id);
        userRealBindsEntity.setDelFlag(1);
        int delete = userRealBindsMapper.updateByPrimaryKeySelective(userRealBindsEntity);
        if (delete > 0) {
            return CommonResult.ok(delete);
        } else {
            return CommonResult.error("500");
        }
    }

    /**
     * 修改实例信息（后台管理）
     * lzy 2022-8-17 20点07分
     * @param userRealBindsEntity
     * @return
     */
    @Override
    public CommonResult editUserRealBinds(UserRealBindsEntity userRealBindsEntity) {
        userRealBindsEntity.setUpdateTime(new Date());
        int i = userRealBindsMapper.updateByPrimaryKeySelective(userRealBindsEntity);
        if (i > 0) {
            return CommonResult.ok(i);
        } else {
            return CommonResult.error("500");
        }
    }

    /**
     * 实名信息模糊查询（后台管理）
     * lzy 2022-8-17 20点45分
     * @param realName
     * @param identity
     * @param pageRequest   1
     * @return
     */
    @Override
    public CommonResult getUserRealBindsFind(PageRequest pageRequest,String realName, String identity) {
        MyPageHelper.startPage(pageRequest);
        Example example = new Example(UserRealBindsEntity.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andLike("realName", "%" + realName + "%");
        if (identity != null && !identity.equals("")) {
            criteria.andEqualTo("identity", identity);
        }
        List<UserRealBindsEntity> userRealBindsEntities = userRealBindsMapper.selectByExample(example);
        PageResult pageResult = MyPageHelper.pageInfo(userRealBindsEntities);
        return CommonResult.ok(pageResult);
    }

    /**
     * 根据UserId取实名信息列表（前台展示）
     * lzy 2022-8-19 08点45分
     * @param userId
     * @return
     */
    @Override
    public CommonResult getUserRealBindsListView(Integer userId) {
        UserRealBindsEntity userRealBindsEntity = new UserRealBindsEntity();
        userRealBindsEntity.setUserId(userId);
        userRealBindsEntity.setDelFlag(0);
        List<UserRealBindsEntity> userRealBindsEntities = userRealBindsMapper.select(userRealBindsEntity);
        return CommonResult.ok(userRealBindsEntities);
    }

    /**
     * 批量删除实名信息（前台展示）
     * lzy 2022-8-21 20点30分
     * @param ids
     * @return
     */
    @Override
    public CommonResult deleteBatchUserRealBinds(Integer[] ids) {
        UserRealBindsEntity userRealBindsEntity = new UserRealBindsEntity();
        Integer i = 0;
        for (Integer id : ids) {
            userRealBindsEntity.setId(id);
            userRealBindsEntity.setDelFlag(1);
            i = userRealBindsMapper.updateByPrimaryKeySelective(userRealBindsEntity);
        }
        return CommonResult.ok(i);
    }
}
